home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok32.lha / TestBild / txt / Menu.mod < prev    next >
Text File  |  1993-08-15  |  12KB  |  312 lines

  1. (*--------------------------------------------------------------------------
  2.     :Program.      Menu.mod
  3.     :Author.       Andreas Lüdtke
  4.     :Address.      Stangestraße 11, D 2000 Hamburg 50
  5.     :Phone.        040/3905153
  6.     :History.      V1.0, 01-Jan-90, Andreas Lüdtke
  7.     :Copyright.    PD © Andreas Lüdtke 1990.
  8.     :Language.     Modula-2
  9.     :Translator.   M2Amiga 3.3d
  10.     :Imports.      Screen.InitText, Andreas Lüdtke
  11.     :Contents.     Implementationsmodul zur Initialisierung der Menüs des
  12.     :Contents.     Testbildprogramms
  13.  ---------------------------------------------------------------------------*)
  14.  
  15. IMPLEMENTATION MODULE Menu;
  16.  
  17.  
  18. FROM SYSTEM             IMPORT ADR, ADDRESS, LONGSET;
  19. FROM Intuition          IMPORT Menu, MenuPtr, menuEnabled, MenuItem,
  20.         MenuItemPtr, SetMenuStrip, ClearMenuStrip, WindowPtr, IntuiText,
  21.         IntuiTextPtr, MenuItemFlags, MenuItemFlagSet;
  22.  
  23. FROM Screen             IMPORT InitText;
  24.  
  25.  
  26. CONST
  27.   FP        = 0;        (* FrontPen Farbe *)
  28.   BP        = 1;        (* BackPen  Farbe *)
  29.   TH        = 10;       (* Text Hoehe *)
  30.   LO        = 0;        (* Offset Text - linke Menuleiste *)
  31.   OT        = 1;        (* Offset TopEdge bei InitText-Prozedur *)
  32.   LMO       = 10;       (* Offset LeftEdge - Menü *)
  33.   PX = 3; MX = 3; XX = 3; YX = 3;
  34.   PBreite   = 70;       (* Projekt  Menübreite  *)
  35.   MBreite   = 70;       (* Muster   Menübreite  *)
  36.   XBreite   = 80;       (* X-Raster Menübreite  *)
  37.   YBreite   = 80;       (* Y-Raster Menübreite  *)
  38.   PItemB    = 150;      (* Projekt  Itembreite  *)
  39.   MItemB    = 145;      (* Muster   Itembreite  *)
  40.   XItemB    = 75;       (* X-Raster Itembreite  *)
  41.   YItemB    = 75;       (* Y-Raster Itembreite  *)
  42.  
  43.  
  44. VAR
  45.   (* Projekt - Muster - X-Raster - Y-Raster *)
  46.   Menus        : ARRAY [0..3] OF Menu;
  47.  
  48.   (* Projekt:  Titel - Interlace - Ende *)
  49.   PItem       : ARRAY [0..2] OF MenuItem;
  50.   PText       : ARRAY [0..2] OF IntuiText;
  51.  
  52.   (* Muster:    Invers - Linien - Punkte - Rechtecke - Kreise - Gtreppe *)
  53.   (*            Farbtreppe - Schachbrett - TestBild                     *)
  54.   MItem        : ARRAY [0..8] OF MenuItem;
  55.   MText        : ARRAY [0..8] OF IntuiText;
  56.  
  57.   (* X-Raster: 2 - 4 - 8 - 16 - 32 - 64 - 128 *)
  58.   XItem        : ARRAY [0..6] OF MenuItem;
  59.   XText        : ARRAY [0..6] OF IntuiText;
  60.  
  61.   (* Y-Raster: 2 - 4 - 8 - 16 - 32 - 64 - 128 *)
  62.   YItem        : ARRAY [0..6] OF MenuItem;
  63.   YText        : ARRAY [0..6] OF IntuiText;
  64.  
  65.   MPtr,temp    : MenuPtr;
  66.  
  67.  
  68. PROCEDURE SetMenu( VAR wp: WindowPtr);
  69. BEGIN
  70.   IF SetMenuStrip( wp, MPtr) THEN END
  71. END SetMenu;
  72.  
  73.  
  74. PROCEDURE MenuNum( x : CARDINAL) : CARDINAL;
  75. BEGIN
  76.   RETURN( x MOD 020H);
  77. END MenuNum;
  78.  
  79.  
  80. PROCEDURE ItemNum( x : CARDINAL) : CARDINAL;
  81. BEGIN
  82.   RETURN(( x DIV 020H) MOD 020H);
  83. END ItemNum;
  84.  
  85.  
  86. PROCEDURE SubNum( x : CARDINAL) : CARDINAL;
  87. BEGIN
  88.   RETURN( x DIV 0800H);
  89. END SubNum;
  90.  
  91.  
  92. PROCEDURE InitMenu (VAR m  : Menu;
  93.                   VAR mptr : MenuPtr;
  94.                     text   : ADDRESS;
  95.                      ledge : INTEGER;
  96.                     breite : INTEGER;
  97.                      hoehe : INTEGER;
  98.                  NextMenu  : MenuPtr);
  99. BEGIN
  100.   WITH m DO
  101.     leftEdge    := ledge;               topEdge     := 0;
  102.     width       := breite;              height      := hoehe;
  103.     menuName    := text;                flags       := {menuEnabled};
  104.     firstItem   := NIL;                 nextMenu    := NextMenu;
  105.     jazzX       := 0;                   jazzY       := 0;
  106.     beatX       := 0;                   beatY       := 0;
  107.   END;
  108.   mptr:= ADR(m);
  109. END InitMenu;
  110.  
  111.  
  112. PROCEDURE InitItem (VAR mi : MenuItem;
  113.                      ledge : INTEGER;
  114.                      tedge : INTEGER;
  115.                     breite : INTEGER;
  116.                      hoehe : INTEGER;
  117.                      Flags : MenuItemFlagSet;
  118.                      IFill : ADDRESS;
  119.                      SFill : ADDRESS;
  120.                      CChar : CHAR) : MenuItemPtr;
  121. BEGIN
  122.   WITH mi DO
  123.     leftEdge    := ledge;               topEdge     := tedge;
  124.     width       := breite;              height      := hoehe;
  125.     flags       := Flags;               mutualExclude:= LONGSET{};
  126.     subItem     := NIL;                 nextItem    := NIL;
  127.     itemFill    := IFill;               selectFill  := SFill;
  128.     command     := CChar;
  129.   END;
  130.   RETURN ADR(mi);
  131. END InitItem;
  132.  
  133.  
  134. BEGIN
  135.   (* ----------> Initialisierung der Menüstrukturen <---------- *)
  136.   InitMenu( Menus[0], MPtr, ADR("Projekt"), LMO, PBreite, 0,
  137.     ADR( Menus[1]));
  138.   InitMenu( Menus[1], temp, ADR("Muster"), LMO+PBreite, MBreite, 0,
  139.     ADR( Menus[2]));
  140.   InitMenu( Menus[2], temp, ADR("X-Raster"), LMO+PBreite+MBreite,
  141.     XBreite, 0, ADR( Menus[3]));
  142.   InitMenu( Menus[3], temp, ADR("Y-Raster"), LMO+PBreite+MBreite+XBreite,
  143.     YBreite, 0, NIL);
  144.  
  145.  
  146.   (* ----------> "Projekt"-Items initialisieren <---------- *)
  147.   InitText( FP, BP, PX, OT, PText[0], ADR("  Menütitel"));
  148.   Menus[0].firstItem:= InitItem( PItem[0], LO, 0, PItemB, TH,
  149.     MenuItemFlagSet{ itemText, itemEnabled, highComp, commSeq, checkIt,
  150.     menuToggle},
  151.     ADR( PText[0]), NIL, "M");
  152.  
  153.   InitText( FP, BP, PX, OT, PText[1], ADR("  Interlace"));
  154.   PItem[0].nextItem:= InitItem( PItem[1], LO, 10, PItemB, TH,
  155.     MenuItemFlagSet{ itemText, itemEnabled, highComp, commSeq, checkIt,
  156.     menuToggle},
  157.     ADR( PText[1]), NIL, "H");
  158.  
  159.   InitText( FP, BP, PX, OT, PText[2], ADR("  Ende !!!"));
  160.   PItem[1].nextItem:= InitItem( PItem[2], LO, 25, PItemB, TH,
  161.     MenuItemFlagSet{ itemText, itemEnabled, highComp, commSeq},
  162.     ADR( PText[2]), NIL, "E");
  163.  
  164.  
  165.   (* ----------> Muster Items initialisieren <------------ *)
  166.   InitText( FP, BP, MX, OT, MText[0], ADR("  Invers"));
  167.   Menus[1].firstItem:= InitItem( MItem[0], LO, 0, MItemB, TH,
  168.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, menuToggle,
  169.     commSeq},
  170.     ADR( MText[0]), NIL, "I");
  171.  
  172.   InitText( FP, BP, MX, OT, MText[1], ADR("  Linien"));
  173.   MItem[0].nextItem:= InitItem( MItem[1], LO, 15, MItemB, TH,
  174.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  175.     ADR( MText[1]), NIL, "L");
  176.   MItem[1].mutualExclude:= LONGSET{ 2..8};
  177.  
  178.   InitText( FP, BP, MX, OT, MText[2], ADR("  Punkte"));
  179.   MItem[1].nextItem:= InitItem( MItem[2], LO, 25, MItemB, TH,
  180.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  181.     ADR( MText[2]), NIL, "P");
  182.   MItem[2].mutualExclude:= LONGSET{ 1,3..8};
  183.  
  184.   InitText( FP, BP, MX, OT, MText[3], ADR("  Rechtecke"));
  185.   MItem[2].nextItem:= InitItem( MItem[3], LO, 35, MItemB, TH,
  186.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  187.     ADR( MText[3]), NIL, "R");
  188.   MItem[3].mutualExclude:= LONGSET{ 1..2,4..8};
  189.  
  190.   InitText( FP, BP, MX, OT, MText[4], ADR("  Kreise"));
  191.   MItem[3].nextItem:= InitItem( MItem[4], LO, 45, MItemB, TH,
  192.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  193.     ADR( MText[4]), NIL, "K");
  194.   MItem[4].mutualExclude:= LONGSET{ 1..3,5..8};
  195.  
  196.   InitText( FP, BP, MX, OT, MText[5], ADR("  Grautreppe"));
  197.   MItem[4].nextItem:= InitItem( MItem[5], LO, 55, MItemB, TH,
  198.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  199.     ADR( MText[5]), NIL, "G");
  200.   MItem[5].mutualExclude:= LONGSET{ 1..4,6..8};
  201.  
  202.   InitText( FP, BP, MX, OT, MText[6], ADR("  Farbtreppe"));
  203.   MItem[5].nextItem:= InitItem( MItem[6], LO, 65, MItemB, TH,
  204.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  205.     ADR( MText[6]), NIL, "F");
  206.   MItem[6].mutualExclude:= LONGSET{ 1..5,7..8};
  207.  
  208.   InitText( FP, BP, MX, OT, MText[7], ADR("  Schachbrett"));
  209.   MItem[6].nextItem:= InitItem( MItem[7], LO, 75, MItemB, TH,
  210.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, commSeq},
  211.     ADR( MText[7]), NIL, "S");
  212.   MItem[7].mutualExclude:= LONGSET{ 1..6,8};
  213.  
  214.   InitText( FP, BP, MX, OT, MText[8], ADR("  Testbild"));
  215.   MItem[7].nextItem:= InitItem( MItem[8], LO, 85, MItemB, TH,
  216.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, checked,
  217.     commSeq},
  218.     ADR( MText[8]), NIL, "T");
  219.   MItem[8].mutualExclude:= LONGSET{ 1..8};
  220.  
  221.  
  222.   (* ----------> X-Raster Items initialisieren <------------ *)
  223.   InitText( FP, BP, XX, OT, XText[0], ADR("  2"));
  224.   Menus[2].firstItem:= InitItem( XItem[0], LO, 0, XItemB, TH,
  225.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  226.     ADR( XText[0]), NIL, 0C);
  227.   XItem[0].mutualExclude:= LONGSET{ 1..6};
  228.  
  229.   InitText( FP, BP, XX, OT, XText[1], ADR("  4"));
  230.   XItem[0].nextItem:= InitItem( XItem[1], LO, 12, XItemB, TH,
  231.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  232.     ADR( XText[1]), NIL, 0C);
  233.   XItem[1].mutualExclude:= LONGSET{ 0,2..6};
  234.  
  235.   InitText( FP, BP, XX, OT, XText[2], ADR("  8"));
  236.   XItem[1].nextItem:= InitItem( XItem[2], LO, 22, XItemB, TH,
  237.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  238.     ADR( XText[2]), NIL, 0C);
  239.   XItem[2].mutualExclude:= LONGSET{ 0..1,3..6};
  240.  
  241.   InitText( FP, BP, XX, OT, XText[3], ADR("  16"));
  242.   XItem[2].nextItem:= InitItem( XItem[3], LO, 32, XItemB, TH,
  243.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, checked},
  244.     ADR( XText[3]), NIL, 0C);
  245.   XItem[3].mutualExclude:= LONGSET{ 0..2,4..6};
  246.   XStufe := 16;
  247.  
  248.   InitText( FP, BP, XX, OT, XText[4], ADR("  32"));
  249.   XItem[3].nextItem:= InitItem( XItem[4], LO, 42, XItemB, TH,
  250.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  251.     ADR( XText[4]), NIL, 0C);
  252.   XItem[4].mutualExclude:= LONGSET{ 0..3,5..6};
  253.  
  254.   InitText( FP, BP, XX, OT, XText[5], ADR("  64"));
  255.   XItem[4].nextItem:= InitItem( XItem[5], LO, 52, XItemB, TH,
  256.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  257.     ADR( XText[5]), NIL, 0C);
  258.   XItem[5].mutualExclude:= LONGSET{ 0..4,6};
  259.  
  260.   InitText( FP, BP, XX, OT, XText[6], ADR("  128"));
  261.   XItem[5].nextItem:= InitItem( XItem[6], LO, 62, XItemB, TH,
  262.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  263.     ADR( XText[6]), NIL, 0C);
  264.   XItem[6].mutualExclude:= LONGSET{ 0..5};
  265.  
  266.  
  267.   (* ----------> Y-Raster Items initialisieren <------------ *)
  268.   InitText( FP, BP, YX, OT, YText[0], ADR("  2"));
  269.   Menus[3].firstItem:= InitItem( YItem[0], LO, 0, YItemB, TH,
  270.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  271.     ADR( YText[0]), NIL, 0C);
  272.   YItem[0].mutualExclude:= LONGSET{ 1..6};
  273.  
  274.   InitText( FP, BP, YX, OT, YText[1], ADR("  4"));
  275.   YItem[0].nextItem:= InitItem( YItem[1], LO, 12, YItemB, TH,
  276.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  277.     ADR( YText[1]), NIL, 0C);
  278.   YItem[1].mutualExclude:= LONGSET{ 0,2..6};
  279.  
  280.   InitText( FP, BP, YX, OT, YText[2], ADR("  8"));
  281.   YItem[1].nextItem:= InitItem( YItem[2], LO, 22, YItemB, TH,
  282.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  283.     ADR( YText[2]), NIL, 0C);
  284.   YItem[2].mutualExclude:= LONGSET{ 0..1,3..6};
  285.  
  286.   InitText( FP, BP, YX, OT, YText[3], ADR("  16"));
  287.   YItem[2].nextItem:= InitItem( YItem[3], LO, 32, YItemB, TH,
  288.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt, checked},
  289.     ADR( YText[3]), NIL, 0C);
  290.   YItem[3].mutualExclude:= LONGSET{ 0..2,4..6};
  291.   YStufe := 16;
  292.  
  293.   InitText( FP, BP, YX, OT, YText[4], ADR("  32"));
  294.   YItem[3].nextItem:= InitItem( YItem[4], LO, 42, YItemB, TH,
  295.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  296.     ADR( YText[4]), NIL, 0C);
  297.   YItem[4].mutualExclude:= LONGSET{ 0..3,5..6};
  298.  
  299.   InitText( FP, BP, YX, OT, YText[5], ADR("  64"));
  300.   YItem[4].nextItem:= InitItem( YItem[5], LO, 52, YItemB, TH,
  301.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  302.     ADR( YText[5]), NIL, 0C);
  303.   YItem[5].mutualExclude:= LONGSET{ 0..4,6};
  304.  
  305.   InitText( FP, BP, YX, OT, YText[6], ADR("  128"));
  306.   YItem[5].nextItem:= InitItem( YItem[6], LO, 62, YItemB, TH,
  307.     MenuItemFlagSet{ itemText, itemEnabled, highComp, checkIt},
  308.     ADR( YText[6]), NIL, 0C);
  309.   YItem[6].mutualExclude:= LONGSET{ 0..5};
  310.  
  311. END Menu.mod
  312.